package com.vadmin.vadminjava.common;

import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;

/**
 * 缓存
 *
 * @author
 * @description:
 * @param:
 * @return:
 * @date: 2021/3/15 16:04
 */
@Component
public class MemoryCache {

    private static final org.slf4j.Logger log = LoggerFactory.getLogger(MemoryCache.class);


    /** 功能描述: 热数据,只缓存5秒 */
    private final static Cache<String, Object> shortCache5S = CacheBuilder.newBuilder().initialCapacity(50)
            .expireAfterWrite(5, TimeUnit.SECONDS).build();

    /** 功能描述: 热数据,只缓存20秒 */private final static Cache<String, Object> shortCache20S = CacheBuilder.newBuilder().initialCapacity(50)
            .expireAfterWrite(20, TimeUnit.SECONDS).build();

    /** 功能描述: 热数据,缓存10分钟 */
    public final static Cache<String, Object> shortCache10M = CacheBuilder.newBuilder().initialCapacity(50)
            .expireAfterWrite(10, TimeUnit.MINUTES).build();

    /** 功能描述: 热数据,只缓存7000秒 */
    private final static Cache<String, Object> shortCache7000S = CacheBuilder.newBuilder().initialCapacity(50)
            .expireAfterWrite(7000, TimeUnit.SECONDS).build();

    ////////////////////////////////////// 下面是返回缓存对象，用于获取key的方法getIfPresent ////////////////////////////////////////////
    ////////////////////////////////////// 下面是返回缓存对象，用于获取key的方法getIfPresent ////////////////////////////////////////////
    ////////////////////////////////////// 下面是返回缓存对象，用于获取key的方法getIfPresent ////////////////////////////////////////////


    public static Cache<String, Object> shortCache20S()  {
        return shortCache20S;
    }

    public static  Cache<String, Object> shortCache10M() {
        return shortCache10M;
    }

    public static  Cache<String, Object> shortCache7000S() {
        return shortCache7000S;
    }

    ////////////////////////////////////// 下面是设置缓存方法 ////////////////////////////////////////////
    ////////////////////////////////////// 下面是设置缓存方法 ////////////////////////////////////////////
    ////////////////////////////////////// 下面是设置缓存方法 ////////////////////////////////////////////

    public static void  setShortCache20S(String key, String value)  {
        shortCache20S.put(key, value);
    }


    public static void setShortCache10M(String key, String value) {
        shortCache10M.put(key, value);
    }

    public static void  setShortCache7000S(String key, String value)  {
        shortCache7000S.put(key, value);
    }

    ////////////////////////////////////// 下面是销毁缓存方法 ////////////////////////////////////////////
    ////////////////////////////////////// 下面是销毁缓存方法 ////////////////////////////////////////////
    ////////////////////////////////////// 下面是销毁缓存方法 ////////////////////////////////////////////

    public static void removeShortCache10M(String key) {
        shortCache10M.invalidate(key);
    }




}
